"""
构造方法的固定名称为__init__()，当创建类的对象时，系统会自动调用构造方法，实现对象的初始化操作。
【例 6-3】  构造方法示例。
【参考代码】
【程序说明】在该程序中，第3～5行实现了__init__()方法，给Person类添加了name和snack属性并赋初值，在eat()方法中访问了name和snack的值。
例6-3中，无论创建多少个Person类的对象，name和snack变量的初始值都是默认值。如果想要为不同对象初始化不同的值，可使用有参构造方法，即在构造方法中设置形参。创建对象时，为不同对象传入不同的实参，并将每个对象的变量初始化为实参的值。
"""


class Person:  # 定义Person类
    # 构造方法，定义变量并赋初值
    def __init__(self):
        self.name = "小蓝"
        self.snack = "薯条"

    def eat(self):  # 定义方法，输出变量
        print("{}喜欢的零食是{}".format(self.name, self.snack))


xiaolan = Person()  # 创建对象
xiaolan.eat()  # 调用eat()方法


"""
【例 6-4】   有参构造方法示例。
【参考代码】
【程序说明】在该程序中，第3～5行定义了带参数的构造方法，包含两个参数name和snack，创建对象时，可为不同对象传入不同的参数值。
【小提示】Python中每个类有且仅有一个构造方法，即便不手动为类添加任何构造方法，创建对象时，也会隐式地调用只包含self参数的构造方法
"""


class Person:  # 定义Person类
    # 构造方法，定义变量并赋初值
    def __init__(self, name, snack):
        self.name = name
        self.snack = snack

    def eat(self):  # 定义方法，输出变量
        print("{}喜欢的零食是{}".format(self.name, self.snack))


xiaolan = Person("小蓝", "薯条")  # 创建对象xiaolan
xiaolan.eat()  # xiaolan调用eat()方法
xiaowu = Person("小舞", "冰激凌")  # 创建对象xiaowu
xiaowu.eat()  # xiaowu调用eat()方法
